package com.project.service.impl;

import com.project.bean.CutPageBean;
import com.project.bean.ProductBean;
import com.project.mapper.IProductMapper;
import com.project.service.IProductService;
import org.apache.ibatis.session.SqlSession;

import java.time.LocalDate;
import java.util.List;

public class ProductServiceImpl extends BaseService implements IProductService {
    @Override
    public void add(ProductBean product) {
        SqlSession session = this.getSession();
        IProductMapper mapper = session.getMapper(IProductMapper.class);
//        mapper.add(product);

        mapper.addProduct(product);

        session.commit();
        session.close();
    }

    @Override
    public void del(Integer id) {
        SqlSession session = this.getSession();
        IProductMapper mapper = session.getMapper(IProductMapper.class);
        mapper.del(id);
        session.commit();
        session.close();
    }

    @Override
    public void update(Integer id, Integer price) {
        SqlSession session = this.getSession();
        IProductMapper mapper = session.getMapper(IProductMapper.class);
        mapper.update(id,price);
        session.commit();
        session.close();
    }

    @Override
    public List<ProductBean> findAll() {
        SqlSession session = this.getSession();
        IProductMapper mapper = session.getMapper(IProductMapper.class);
        List<ProductBean> list = mapper.findAll();

        session.close();
        return list;
    }

    @Override
    public ProductBean findById(Integer id) {
        SqlSession session = this.getSession();
        IProductMapper mapper = session.getMapper(IProductMapper.class);
        ProductBean product = mapper.findById(id);
        session.close();
        return product;
    }

    @Override
    public List<ProductBean> findByName(String name) {
        SqlSession session = this.getSession();
        IProductMapper mapper = session.getMapper(IProductMapper.class);
        List<ProductBean> list = mapper.findByName(name);
        session.close();
        return list;
    }

    @Override
    public List<ProductBean> findByItem(String name, LocalDate startDate, LocalDate endDate) {
        SqlSession session = this.getSession();
        IProductMapper mapper = session.getMapper(IProductMapper.class);
        List<ProductBean> list = mapper.findByItem(name,startDate,endDate);
        session.close();
        return list;
    }

    @Override
    public CutPageBean<ProductBean> cutByItem(int pageNO, String name, LocalDate startDate, LocalDate endDate) {
        SqlSession session = this.getSession();
        IProductMapper mapper = session.getMapper(IProductMapper.class);
        CutPageBean<ProductBean> cutBean = new CutPageBean<>();
        cutBean.setList(mapper.cutList(name,startDate,endDate,
                (pageNO - 1)*CutPageBean.PAGESIZE,CutPageBean.PAGESIZE));
        cutBean.setCount(mapper.cutCount(name,startDate,endDate));

        session.close();
        return cutBean;
    }

    @Override
    public void addMore(List<ProductBean> productList) {
        SqlSession session = this.getSession();
        IProductMapper mapper = session.getMapper(IProductMapper.class);

        mapper.addMore(productList);

        session.commit();
        session.close();
    }

    @Override
    public void delMore(int[] idArray) {
        SqlSession session = this.getSession();
        IProductMapper mapper = session.getMapper(IProductMapper.class);
        mapper.delMore(idArray);

        session.commit();
        session.close();
    }


}
